|
Date : 22 avril 1990 Protection : MOT DE PASSE Temps pass� : 4 heures Soft : SKYCHASE Outils : PERISCOPE + SWITCH Soci�t� : BRODERBUND Fichier : EGACHASE.EXE Divers : PACKED FILE Origine : INDONESIE Num�ro : 018 En sautant dans le programme avec le switch � la demande de mot de passe on tombe dans une s�rie d'instructions OUT qui en fait repr�- sentent l'animation graphique de l'�cran. En d�roulant le programme U apr�s U on trouve une instruction HLT pr�c�d�e d'un saut index�. JMP [DI+1164] Avec le contenu de 1164 �gal � 0A on se retrouve avec le message: SORRY, WRONG ANSWER etc... En placant 00 dans 1164 le programme fonctionne! 1) Premier essai avec PCTOOLS pour rendre la position 1164 �gale � zero. En cherchant la chaine avec PCTOOLS je m'apercois que le contenu de 1164 est d�j� � l'origine �gal � 00. C'est donc le programme qui y inscrit cette valeur. 2) Second essai; voir � quoi correspond le saut [DI+1164] avec 1164 � zero et tenter de sauter directement... R�sultat; le soft se plante. 3) Conserver le saut index� et �crire juste avant 00 en 1164.... Replantage. Apr�s un long examen et des tatonnements tous azimuts j'arrive � la conclusion que cette position m�moire est utilis�e sans arret par le programme car en examinant cette position par la suite elle contient 01 pour le d�roulement normal du jeu. Lorsque le mot de passe est correct elle contient 00 et 0A s'il est erron�. Il ne reste plus que la solution de tester la position 1164 et d�s qu'elle contient 0A lui faire contenir 00. Il faut donc trouver une zone de data inutilis�e ( en principe ca n'existe pas ) ou qui ne sert � rien ( ca, ca existe. ) en l'occurrence la zone d'affichage du mot de passe et des messages du style SORRY.... La suite d�crit la m�thode et les instructions utilis�es. Instructions rajout�es ou modifi�es (*): La zone de donn�es 09EE-09FC affichait la demande de mot de passe, j'ai utilis� cet emplacement pour y placer la portion de code qu'il fallait rajouter pour d�tourner la protection. 3166:09EE 2E CS: * 3166:09EF 803E64110A CMP BYTE PTR [1164],0A * 3166:09F4 7506 JNZ 09FC * 3166:09F6 2E CS: * 3166:09F7 C606641100 MOV BYTE PTR [1164],00 * 3166:09FC E96707 JMP 1166 * 3166:1161 E98AF8 JMP 09EE * 3166:1164 0A00 OR AL,[BX+SI] 3166:1166 2E CS: 3166:1167 8B3E6411 MOV DI,[1164] 3166:116B D1E7 SHL DI,1 3166:116D 2E CS: 3166:116E FFA57211 JMP [DI+1172] 3166:1172 8811 MOV [BX+DI],DL 3166:1174 F4 HLT Programme d'origine non modifi�: 3166:1161 EB03 JMP 1166 3166:1163 90 NOP 3166:1164 0A00 OR AL,[BX+SI] 3166:1166 2E CS: 3166:1167 8B3E6411 MOV DI,[1164] 3166:116B D1E7 SHL DI,1 3166:116D 2E CS: 3166:116E FFA57211 JMP [DI+1172] 3166:1172 8811 MOV [BX+DI],DL 3166:1174 F4 HLT NOTE: Cette protection n'a �t� enlev�e que sur le fichier EGA/VGA, elle est toujours active sur les fichiers CGA et HERCULES. Avec PCTOOLS rechercher : 536F7272792C207772................ ET MODIFIER PAR : 2E803E64110A75062EC606641100E9A707 Puis chercher SL 94 et DEP 499 : EB0390 et remplacer par E94AF8 FREDDY |